热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

`hashCode`的默认实现是什么?[重复]-Whatisthedefaultimplementationof`hashCode`?[duplicate]

Thisquestionalreadyhasananswerhere:这个问题在这里已有答案:Whatisanobjectshashcodeifh

This question already has an answer here:

这个问题在这里已有答案:

  • What is an object's hash code if hashCode() is not overridden? 11 answers
  • 如果不覆盖hashCode(),那么对象的哈希码是什么? 11个答案

If one does not override the hashCode method, what is the default implementation of hashCode ?

如果没有覆盖hashCode方法,hashCode的默认实现是什么?

3 个解决方案

#1


41  

Then this class inherits hashCode from one of its ancestors. If non of them overrides it, then Object.hashCode is used.

然后这个类从其祖先之一继承hashCode。如果不覆盖它,则使用Object.hashCode。

From the docs:

来自文档:

As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.)

尽可能合理,Object类定义的hashCode方法确实为不同的对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但JavaTM编程语言不需要此实现技术。)

So default implementation is JVM-specific

因此,默认实现是特定于JVM的

#2


15  

By default, methods that are not overriden are inherited from Object.

默认情况下,未覆盖的方法从Object继承。

If you look at that method's documentation, the return values are "[...] distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer [...])". The method in java.lang.Object is declared as native, which means the implementation is provided by the JVM and may vary depending on your runtime environment.

如果查看该方法的文档,返回值是“[...]不同对象的不同整数。(这通常通过将对象的内部地址转换为整数[...])”来实现。 java.lang.Object中的方法声明为native,这意味着实现由JVM提供,并且可能因运行时环境而异。

A small example:

一个小例子:

Object o1 = new Object();
Object o2 = new Object();
System.out.println(o1.hashCode());
System.out.println(o2.hashCode());

prints (using my jdk6):

打印(使用我的jdk6):

1660187542
516992923

A Hex representation of the hashCode() value is used in the default implementation of toString() by the way: Running System.out.println(o1) prints something like

hashCode()值的十六进制表示形式在toString()的默认实现中使用:运行System.out.println(o1)打印类似的东西

java.lang.Object@7a5e1077

#3


4  

Object.hashcode() is a native method.

Object.hashcode()是一种本机方法。

public native int hashCode();

public native int hashCode();

That means it's implemented in platform specific code and is exposed as a native method.

这意味着它是在特定于平台的代码中实现的,并作为本机方法公开。

code for the same will be a compiled code and not available withing JDK

相同的代码将是一个编译的代码,不能用于JDK

this existing question might provide more info.

这个现有问题可能会提供更多信息。


推荐阅读
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • andr ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • 本文详细介绍了中央电视台电影频道的节目预告,并通过专业工具分析了其加载方式,确保用户能够获取最准确的电视节目信息。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
  • 本文介绍了如何通过配置 Android Studio 和 Gradle 来显著提高构建性能,涵盖内存分配优化、并行构建和性能分析等实用技巧。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 本文详细介绍了 org.jdesktop.swingx.JXTitledPanel 类中的 setUI() 方法,探讨其功能、使用场景,并提供了多个实际代码示例。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 本文详细介绍了Linux系统中init进程的作用及其启动过程,解释了运行级别的概念,并提供了调整服务启动顺序的具体步骤和实例。通过了解这些内容,用户可以更好地管理系统的启动流程和服务配置。 ... [详细]
author-avatar
Jason剑豪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有